package com.zjcloud.jwgl.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zjcloud.common.annotation.Excel;
import com.zjcloud.common.core.domain.BaseEntity;

/**
 * 算法性能基准对象 ac_algorithm_benchmark
 * 
 * @author zjcloud
 * @date 2024-12-19
 */
public class AcAlgorithmBenchmark extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 基准ID */
    private Long id;

    /** 基准编码 */
    @Excel(name = "基准编码")
    private String benchmarkCode;

    /** 基准名称 */
    @Excel(name = "基准名称")
    private String benchmarkName;

    /** 算法类型ID */
    @Excel(name = "算法类型ID")
    private Long algorithmTypeId;

    /** 数据集规模(SMALL小规模 MEDIUM中等规模 LARGE大规模) */
    @Excel(name = "数据集规模", readConverterExp = "SMALL=小规模,MEDIUM=中等规模,LARGE=大规模")
    private String datasetScale;

    /** 数据集描述 */
    @Excel(name = "数据集描述")
    private String datasetDescription;

    /** 基准参数JSON */
    private String benchmarkParameters;

    /** 期望执行时间(秒) */
    @Excel(name = "期望执行时间(秒)")
    private BigDecimal expectedExecutionTime;

    /** 期望内存使用(MB) */
    @Excel(name = "期望内存使用(MB)")
    private BigDecimal expectedMemoryUsage;

    /** 期望成功率(%) */
    @Excel(name = "期望成功率(%)")
    private BigDecimal expectedSuccessRate;

    /** 期望质量分数 */
    @Excel(name = "期望质量分数")
    private BigDecimal expectedQualityScore;

    /** 最优解值 */
    @Excel(name = "最优解值")
    private BigDecimal optimalSolutionValue;

    /** 可接受解值范围 */
    @Excel(name = "可接受解值范围")
    private String acceptableSolutionRange;

    /** 测试次数 */
    @Excel(name = "测试次数")
    private Integer testCount;

    /** 通过次数 */
    @Excel(name = "通过次数")
    private Integer passCount;

    /** 平均执行时间(秒) */
    @Excel(name = "平均执行时间(秒)")
    private BigDecimal averageExecutionTime;

    /** 平均内存使用(MB) */
    @Excel(name = "平均内存使用(MB)")
    private BigDecimal averageMemoryUsage;

    /** 平均质量分数 */
    @Excel(name = "平均质量分数")
    private BigDecimal averageQualityScore;

    /** 标准差 */
    @Excel(name = "标准差")
    private BigDecimal standardDeviation;

    /** 最后测试时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "最后测试时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date lastTestTime;

    /** 基准状态(ACTIVE活跃 INACTIVE非活跃 DEPRECATED已废弃) */
    @Excel(name = "基准状态", readConverterExp = "ACTIVE=活跃,INACTIVE=非活跃,DEPRECATED=已废弃")
    private String benchmarkStatus;

    /** 难度等级(1-5) */
    @Excel(name = "难度等级(1-5)")
    private Integer difficultyLevel;

    /** 优先级(1-10) */
    @Excel(name = "优先级(1-10)")
    private Integer priority;

    /** 标签 */
    @Excel(name = "标签")
    private String tags;

    /** 算法类型信息 */
    private AcAlgorithmType algorithmType;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setBenchmarkCode(String benchmarkCode) 
    {
        this.benchmarkCode = benchmarkCode;
    }

    public String getBenchmarkCode() 
    {
        return benchmarkCode;
    }
    public void setBenchmarkName(String benchmarkName) 
    {
        this.benchmarkName = benchmarkName;
    }

    public String getBenchmarkName() 
    {
        return benchmarkName;
    }
    public void setAlgorithmTypeId(Long algorithmTypeId) 
    {
        this.algorithmTypeId = algorithmTypeId;
    }

    public Long getAlgorithmTypeId() 
    {
        return algorithmTypeId;
    }
    public void setDatasetScale(String datasetScale) 
    {
        this.datasetScale = datasetScale;
    }

    public String getDatasetScale() 
    {
        return datasetScale;
    }
    public void setDatasetDescription(String datasetDescription) 
    {
        this.datasetDescription = datasetDescription;
    }

    public String getDatasetDescription() 
    {
        return datasetDescription;
    }
    public void setBenchmarkParameters(String benchmarkParameters) 
    {
        this.benchmarkParameters = benchmarkParameters;
    }

    public String getBenchmarkParameters() 
    {
        return benchmarkParameters;
    }
    public void setExpectedExecutionTime(BigDecimal expectedExecutionTime) 
    {
        this.expectedExecutionTime = expectedExecutionTime;
    }

    public BigDecimal getExpectedExecutionTime() 
    {
        return expectedExecutionTime;
    }
    public void setExpectedMemoryUsage(BigDecimal expectedMemoryUsage) 
    {
        this.expectedMemoryUsage = expectedMemoryUsage;
    }

    public BigDecimal getExpectedMemoryUsage() 
    {
        return expectedMemoryUsage;
    }
    public void setExpectedSuccessRate(BigDecimal expectedSuccessRate) 
    {
        this.expectedSuccessRate = expectedSuccessRate;
    }

    public BigDecimal getExpectedSuccessRate() 
    {
        return expectedSuccessRate;
    }
    public void setExpectedQualityScore(BigDecimal expectedQualityScore) 
    {
        this.expectedQualityScore = expectedQualityScore;
    }

    public BigDecimal getExpectedQualityScore() 
    {
        return expectedQualityScore;
    }
    public void setOptimalSolutionValue(BigDecimal optimalSolutionValue) 
    {
        this.optimalSolutionValue = optimalSolutionValue;
    }

    public BigDecimal getOptimalSolutionValue() 
    {
        return optimalSolutionValue;
    }
    public void setAcceptableSolutionRange(String acceptableSolutionRange) 
    {
        this.acceptableSolutionRange = acceptableSolutionRange;
    }

    public String getAcceptableSolutionRange() 
    {
        return acceptableSolutionRange;
    }
    public void setTestCount(Integer testCount) 
    {
        this.testCount = testCount;
    }

    public Integer getTestCount() 
    {
        return testCount;
    }
    public void setPassCount(Integer passCount) 
    {
        this.passCount = passCount;
    }

    public Integer getPassCount() 
    {
        return passCount;
    }
    public void setAverageExecutionTime(BigDecimal averageExecutionTime) 
    {
        this.averageExecutionTime = averageExecutionTime;
    }

    public BigDecimal getAverageExecutionTime() 
    {
        return averageExecutionTime;
    }
    public void setAverageMemoryUsage(BigDecimal averageMemoryUsage) 
    {
        this.averageMemoryUsage = averageMemoryUsage;
    }

    public BigDecimal getAverageMemoryUsage() 
    {
        return averageMemoryUsage;
    }
    public void setAverageQualityScore(BigDecimal averageQualityScore) 
    {
        this.averageQualityScore = averageQualityScore;
    }

    public BigDecimal getAverageQualityScore() 
    {
        return averageQualityScore;
    }
    public void setStandardDeviation(BigDecimal standardDeviation) 
    {
        this.standardDeviation = standardDeviation;
    }

    public BigDecimal getStandardDeviation() 
    {
        return standardDeviation;
    }
    public void setLastTestTime(Date lastTestTime) 
    {
        this.lastTestTime = lastTestTime;
    }

    public Date getLastTestTime() 
    {
        return lastTestTime;
    }
    public void setBenchmarkStatus(String benchmarkStatus) 
    {
        this.benchmarkStatus = benchmarkStatus;
    }

    public String getBenchmarkStatus() 
    {
        return benchmarkStatus;
    }
    public void setDifficultyLevel(Integer difficultyLevel) 
    {
        this.difficultyLevel = difficultyLevel;
    }

    public Integer getDifficultyLevel() 
    {
        return difficultyLevel;
    }
    public void setPriority(Integer priority) 
    {
        this.priority = priority;
    }

    public Integer getPriority() 
    {
        return priority;
    }
    public void setTags(String tags) 
    {
        this.tags = tags;
    }

    public String getTags() 
    {
        return tags;
    }
    public void setAlgorithmType(AcAlgorithmType algorithmType) 
    {
        this.algorithmType = algorithmType;
    }

    public AcAlgorithmType getAlgorithmType() 
    {
        return algorithmType;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("benchmarkCode", getBenchmarkCode())
            .append("benchmarkName", getBenchmarkName())
            .append("algorithmTypeId", getAlgorithmTypeId())
            .append("datasetScale", getDatasetScale())
            .append("datasetDescription", getDatasetDescription())
            .append("benchmarkParameters", getBenchmarkParameters())
            .append("expectedExecutionTime", getExpectedExecutionTime())
            .append("expectedMemoryUsage", getExpectedMemoryUsage())
            .append("expectedSuccessRate", getExpectedSuccessRate())
            .append("expectedQualityScore", getExpectedQualityScore())
            .append("optimalSolutionValue", getOptimalSolutionValue())
            .append("acceptableSolutionRange", getAcceptableSolutionRange())
            .append("testCount", getTestCount())
            .append("passCount", getPassCount())
            .append("averageExecutionTime", getAverageExecutionTime())
            .append("averageMemoryUsage", getAverageMemoryUsage())
            .append("averageQualityScore", getAverageQualityScore())
            .append("standardDeviation", getStandardDeviation())
            .append("lastTestTime", getLastTestTime())
            .append("benchmarkStatus", getBenchmarkStatus())
            .append("difficultyLevel", getDifficultyLevel())
            .append("priority", getPriority())
            .append("tags", getTags())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}